package com.shy.servlet;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

//Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程：
//Servlet 初始化后调用 init () 方法。
//Servlet 调用 service() 方法来处理客户端的请求。
//Servlet 销毁前调用 destroy() 方法。
//最后，Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
public class CetServlet implements Servlet {  // 实现Servlet接口
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    /**
     * 用于获取Servlet配置相关的信息
     */
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

        // 1.获取请求参数
        String stuId = servletRequest.getParameter("studentId"); // 参数即<form>的name属性
        String stuName = servletRequest.getParameter("studentName");
        System.out.println(stuName);

        // 2. 用随机数模拟分数
        int stuScore = Math.abs(new Random().nextInt(711));

        /* 若生成的请求页面出现乱码,可添加以下设置:
           但必须在获取PrintWriter对象之前获取
           text/html是设置MIME类型,用于指定响应的内容以html格式显示
           utf-8 防止中文乱码
         */
        servletResponse.setContentType("text/html;charset=utf-8");
        // 3.响应客户端的请求
        // PrintWriter对象指定相应内容, 支持HTML
        PrintWriter out = servletResponse.getWriter();

        // 简单写一下格式
        out.println("<h1>查询结果<h1><hr>");
        out.println("<br>考号:" + stuId);
        out.println("<br>姓名:" + stuName);
        out.println("<br>成绩:" + stuScore);
    }

    /**
     *
     * 获取Servlet的相关信息
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
